// utils/common.js
const request = require('./request') // 可引入已有的request工具

class Common {
  // 获取身份
  static async getUserInfo() {
    try {
      const res = await request.get('/admin-api/mini/home/getRole')
      if (res.code === 0) {
        // 保存用户信息
        wx.setStorageSync('phone', res.data.phone)
        wx.setStorageSync('role', res.data.role)
        // 保存商户ID（如果存在）
        if (res.data.merchantId) {
          wx.setStorageSync('merchantId', res.data.merchantId)
        }
        // 保存商户名称（如果存在，可能是逗号分隔的多个商户名）
        if (res.data.merchantName) {
          wx.setStorageSync('merchantName', res.data.merchantName)
        }
        // 保存用户姓名（role接口返回的name字段）
        if (res.data.name) {
          wx.setStorageSync('roleName', res.data.name)
        }
        // 保存用户 ID 和用户名（如果接口返回）
        // if (res.data.userId || res.data.id) {
        //   wx.setStorageSync('userId', res.data.userId || res.data.id)
        // }
        // if (res.data.userName || res.data.username || res.data.name) {
        //   wx.setStorageSync('userName', res.data.userName || res.data.username || res.data.name)
        // }
        // return { success: true, data: res.data }
      } 
    } catch (err) {
      return { success: false, msg: '网络错误' }
    }
  }

  // 日期转 YYYY-M-DD
  static formatDate(date) {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  }

  // 示例2：公共的提示方法
  static showToast(title, icon = 'none') {
    wx.showToast({
      title,
      icon,
      duration: 2000
    })
  }

  // 示例3：检查是否登录
  static isLogin() {
    const token = wx.getStorageSync('token')
    return !!token // 返回布尔值（true已登录，false未登录）
  }

  /**
   * 获取字典数据
   * @param {String} dictType - 字典类型
   * @param {Number} pageSize - 每页数量，默认100
   * @returns {Promise} 返回字典列表
   */
  static async getDictData(dictType, pageSize = 100) {
    try {
      const params = {
        pageNo: 1,
        pageSize: pageSize,
        dictType: dictType,
        status: 0 // 只获取启用状态的字典
      }
      const res = await request.get('/admin-api/system/dict-data/page', params)
      if (res.code === 0 && res.data) {
        return res.data.list || []
      }
      return []
    } catch (err) {
      console.error('获取字典数据失败:', err)
      return []
    }
  }

  /**
   * 根据字典value获取label
   * @param {Array} dictList - 字典列表
   * @param {String} value - 字典值
   * @returns {String} 字典标签
   */
  static getDictLabel(dictList, value) {
    if (!dictList || !Array.isArray(dictList)) return value || ''
    const item = dictList.find(dict => String(dict.value) === String(value))
    return item ? item.label : value || ''
  }

  /**
   * 根据字典label获取value
   * @param {Array} dictList - 字典列表
   * @param {String} label - 字典标签
   * @returns {String} 字典值
   */
  static getDictValue(dictList, label) {
    if (!dictList || !Array.isArray(dictList)) return label || ''
    const item = dictList.find(dict => dict.label === label)
    return item ? item.value : label || ''
  }
}

// 暴露实例或静态方法
module.exports = Common